The present invention relates generally to traffic management and more particularly to a method and apparatus for data flow control of a transmission port in a communications network.
Communications networks are comprised of many components including telecommunications switches that route voice and/or data packets to and from various devices (i.e. sources and destinations) that are connected to the network. These devices include telephones, facsimile machines, routers, servers, and/or other switches. The telecommunications switches perform many complex functions to manage data traffic. For example, the switch increases its available bandwidth while reducing the complexity of the network. As such, the Qualities of Service (QoS) of the switches improves.
An ATM network, which is an example of a communications network, has a number of available QoS classes including: constant bit rate (CBR), real-time variable bit rate (VBR), non-real-time variable bit rate (VBR), and unspecified bit rate (UBR). CBR and VBR are typically dedicated for handling real-time communication such as voice and video while UBR is typically dedicated for handling data communication. ATM switches, in an ATM network, use traffic load information to calculate the allowed data rates that can pass through them. In general, these data rates are sent to various devices connected to the network through resource management (RM) cells. RM cells include forward resource management (FRM) cells and backward resource management (BRM) cells.
In a point-to-point communication, a source sends an FRM cell every 32 cell transmissions. The FRM cell indicates, for the given data transmission, the rate at which the source is transmitting data (e.g. 10 Mbps). The FRM cells propagate through the network until they are received by a destination. The destination processes each FRM cell and produces, therefrom, a BRM cell, which indicates that the current data rate of the source is acceptable, too slow, or too fast. Such an indication may be done by a congestion indication (CI) bit and a no increase (NI) bit, and/or an explicit rate (ER) value. For example, the destination sets the CI bit when the source data rate is too fast, sets the NI bit and clears the CI bit) when the source data rate is acceptable, and clears both the CI and NM bits when the source data rate is too slow. Alternatively, the destination may calculate an ER value to indicate a data rate that is acceptable to the destination. Note that a source may be an end user device (e.g., a telephone, personal computer, facsimile machine, etc.) or a virtual source (i.e., a switch that functions, with respect to a destination, as a source). Further note that a destination may be an end user device or a virtual destination (i.e., a switch that functions, with respect to a source, as a destination).
The BRM cell propagates through the network until it is received by a source. The source processes the BRM cell to adjust its data rate accordingly. For example, the source incrementally adjusts it data rate based on the CI and NI bits or it adjusts it data rate to that indicated by the ER value. This process continues for the communication, such that for each BRM cell received, the source, if needed, adjusts its data rate.
An explicit rate (ER) computational engine executes an ER algorithm to determine the ER value. In general, the ER algorithm attempts to fairly distribute bandwidth between ABR connections at a contention point (i.e., within a switch) and further attempts to prevent the ABR connections from consuming the entire bandwidth when lower priority connections are present. One such ER calculation technique measures the input bandwidth and output bandwidth of the destination, adjusts one rate over the other based on available bandwidth, and then sets the ER accordingly (i.e. increases or decreases the input of data from the source). Further, the bandwidth that is used by the CBR and VBR, can be subtracted from the total bandwidth used to produce an ABR result. This type of processing, however, is difficult to perform in real time in a switch because measuring the input rate of data is difficult and scheduling at the output port is complex. Since the input bandwidth replicates a complex scheduler, the ABR calculation will begin to grow as the scheduler becomes more complex.
Queue depth algorithms simplify the input bandwidth measurement by performing a calculation to determine if the input rate is too high or too low. If the queue is growing, the ER is decreased and if the queue is shrinking, the ER is increased. After calculating a preliminary ER, the ER value is scaled (increased or decreased) based on the source priority for each source. The scaled ER is then sent to each source where a generic explicit rate or offered bandwidth (OBW) is calculated. This is the transmission rate for each source and will change based on the next received scaled ER. One algorithm that utilizes a scaling factor to calculate the OBW is called a congestion bias algorithm. According to the congestion bias algorithm (OBW=OBW (1+/xe2x88x92k)). If the queue depth is not at its lower or upper threshold, the OBW can be scaled by increasing or decreasing the constant k. The scaling of the constant helps to omit a linear correction from occurring. The problem with this scaling, however, is that the scaling factor is fixed and small. Thus, when the queue depth is substantially off target, a linear correction takes time to provide the needed correction. Another problem can occur if a large number of channels are being utilized (e.g. 20,000) when the constant is increased or decreased. In this situation, the cell rate would be increased or decreased by the constant multiplied by the number of channels causing an oscillatory condition in the bandwidth. This oscillatory condition is caused because of the increased round trip time (time from a source to a destination and back to the source again) for an RM cell. A marginally stable feedback loop is formed that could become unstable.
Therefore, a need exists for a method and apparatus for flow control of a transmission port that increases the efficiency of the network by providing an efficient, real time, ER calculation in a switch that substantially minimizes or eliminates the problems discussed above.